﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using ASPLanchonete.fabrica;
using ASPLanchonete.classes;
using NHibernate;
using NHibernate.Linq;

namespace ASPLanchonete.controller
{
    public class FornecedorController : IFornecedorController
    {
        Fabrica fabrica = new Fabrica();

        public string Salvar(Fornecedor fornecedor)
        {
            return fabrica.Salva(fornecedor);
        }

        public IList<Fornecedor> Recuperar()
        {
            ISession sessao = fabrica.sessao();
            IList<Fornecedor> fornecedor = sessao.CreateCriteria<Fornecedor>().List<Fornecedor>();
            fabrica.fechaSessao();
            return fornecedor;
        }

        public IList<Fornecedor> RecuperarAtivos()
        {
            ISession sessao = fabrica.sessao();
            IList<Fornecedor> fornecedor = sessao.Query<Fornecedor>().Where(a => a.Ativo == true).ToList();
            fabrica.fechaSessao();
            return fornecedor;
        }

        public Fornecedor PesquisarPorId(int id)
        {
            ISession sessao = fabrica.sessao();
            Fornecedor fornecedor = sessao.Query<Fornecedor>().Where(a => a.Id == id)
                .Fetch(a => a.Cidade)
                .ThenFetch(a => a.Estado)
                .FirstOrDefault();
            fabrica.fechaSessao();
            return fornecedor;
        }
    }
}